package cn.tedu.dubbo.provider;

import cn.tedu.luban.demo.cart.api.CartApi;
import com.tarena.demo.luban.all.main.rpc.CartApiImpl;
import org.apache.dubbo.config.ProtocolConfig;
import org.apache.dubbo.config.RegistryConfig;
import org.apache.dubbo.config.ServiceConfig;
import org.apache.dubbo.config.bootstrap.DubboBootstrap;

public class ProviderServer {
    public static void main(String[] args) {
        //1. 准备一个可以启动的dubbo应用 server
        DubboBootstrap server=DubboBootstrap.getInstance();
        //2. dubbo应用必须提供的参数 是应用名称
        server.application("cart-provider");
        //3. 底层rpc框架的协议和监听端口 dubbo协议 20880
        ProtocolConfig protocolConfig=new ProtocolConfig();
        protocolConfig.setName("dubbo");
        protocolConfig.setPort(-1);//当前服务器dubbo启动时会从20880开始向后一直寻找到一个可用的
        server.protocol(protocolConfig);
        //4. 配置注册中心
        RegistryConfig registryConfig=new RegistryConfig();
        registryConfig.setProtocol("nacos");//注册中心名字
        registryConfig.setAddress("localhost:8848");//地址
        //默认注册 选择 namespace group
        //registryConfig.setParameters();
        server.registry(registryConfig);
        //5. 当前serverdubbo连接注册中心,只能注册ip port dubbo这些数据 并不能注册功能调用
        //等信息,比如 哪个接口,哪个方法等等
        ServiceConfig serviceConfig=new ServiceConfig();
        //删除购物车cartApi接口 和删除购物车的cartApiImpl实现
        serviceConfig.setInterface(CartApi.class);
        serviceConfig.setRef(new CartApiImpl());
        server.service(serviceConfig);
        //provider 可以启动了
        server.start().await();
    }
}
